package cn.jobstart.search;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import cn.jobstart.pubInter.BaseSearch;
import cn.jobstart.model.DouyinVideo;
import java.util.Date;
import java.util.List;
import java.math.BigDecimal;
import lombok.Data;
/**
*   @author xy
*   @Date 2024-01-08 10:38:29
*   @description DouyinVideoSearch       抖音视频列表
*/


@Data
@ApiModel(" 抖音视频列表DouyinVideoSearch")
public abstract class DouyinVideoSearch<Sub extends DouyinVideoSearch<Sub>> extends BaseSearch {
    @ApiModelProperty(value = "主键")
    private List idIn;
    @ApiModelProperty(value = "大于排序")
    private Integer sortNumGreater;
    @ApiModelProperty(value = "小于排序")
    private Integer sortNumLess;
    @ApiModelProperty(value = "是否显示 1:是:Y,0:否:N")
    private List showFlagIn;
    @ApiModelProperty(value = "是否删除 1:删除:Y,0:正常:N")
    private Integer delFlagEq=0;
    @ApiModelProperty(value = "版本")
    private Integer versionEq;
    @ApiModelProperty(value = "点赞数")
    private Integer diggCountEq;
    @ApiModelProperty(value = "大于下载数")
    private Integer downloadCountGreater;
    @ApiModelProperty(value = "小于下载数")
    private Integer downloadCountLess;
    @ApiModelProperty(value = "大于播放数，只有作者本人可见。公开视频设为私密后，播放数也会返回0。")
    private Integer playCountGreater;
    @ApiModelProperty(value = "小于播放数，只有作者本人可见。公开视频设为私密后，播放数也会返回0。")
    private Integer playCountLess;
    @ApiModelProperty(value = "大于分享数")
    private Integer shareCountGreater;
    @ApiModelProperty(value = "小于分享数")
    private Integer shareCountLess;
    @ApiModelProperty(value = "大于转发数")
    private Integer forwardCountGreater;
    @ApiModelProperty(value = "小于转发数")
    private Integer forwardCountLess;
    @ApiModelProperty(value = "大于评论数")
    private Integer commentCountGreater;
    @ApiModelProperty(value = "小于评论数")
    private Integer commentCountLess;
    @ApiModelProperty(value = "媒体类型 2:图集:image,4:视频:video")
    private List mediaTypeIn;
    @ApiModelProperty(value = "视频id")
    private String itemIdEq;
    @ApiModelProperty(value = "视频标题")
    private String titleLike;
    @ApiModelProperty(value = "大于是否置顶 1:置顶:top,0:未置顶:un_top")
    private Integer topFlagGreater;
    @ApiModelProperty(value = "小于是否置顶 1:置顶:top,0:未置顶:un_top")
    private Integer topFlagLess;
    @ApiModelProperty(value = "开始视频创建时间戳")
    private Date videoCreateTimeStart;
    @ApiModelProperty(value = "结束视频创建时间戳")
    private Date videoCreateTimeEnd;
    @ApiModelProperty(value = "大于表示是否审核结束。审核通过或者失败都会返回 true，审核中返回 false。 0:未通过或审核中:n,1:审核通过:y")
    private Integer reviewedFlagGreater;
    @ApiModelProperty(value = "小于表示是否审核结束。审核通过或者失败都会返回 true，审核中返回 false。 0:未通过或审核中:n,1:审核通过:y")
    private Integer reviewedFlagLess;
    @ApiModelProperty(value = "表示视频状态。 1：已发布 2：不适宜公开 4：审核中 1:已发布:Published,2:不适宜公开:Not_Suitable,4:审核中:Under_Review")
    private List videoStatusIn;

    public DouyinVideoSearch() {
        setDelFlagEq(0);
    }



    /**
    * 返回子类Sub
    * @return
    */
    public abstract Sub getSubThis();

    @Override
    public String createTimeFiled() {
        return DouyinVideo.CREATE_TIME;
    }
    @Override
    public String updateTimeFiled() {
        return DouyinVideo.UPDATE_TIME;
    }
    @Override
    public String  setDefaultField() {
        return DouyinVideo.CREATE_TIME;
    }
    @Override
    public String pkField() {
        return DouyinVideo.ID;
    }

    @Override
    public String  toString() {
        return "DouyinVideoSearch{}"+super.toString();
    }
    public Sub setIdIn(List idIn){
        this.idIn = idIn;
        setInField(DouyinVideo.ID, idIn);
        return getSubThis();
    }
    public Sub setSortNumGreater(Integer sortNumGreater){
        this.sortNumGreater = sortNumGreater;
        setGreaterField(DouyinVideo.SORT_NUM, sortNumGreater);
        return getSubThis();
    }
    public Sub setSortNumLess(Integer sortNumLess){
        this.sortNumLess = sortNumLess;
        setLessField(DouyinVideo.SORT_NUM, sortNumLess);
        return getSubThis();
    }
    public Sub setShowFlagIn(List showFlagIn){
        this.showFlagIn = showFlagIn;
        setInField(DouyinVideo.SHOW_FLAG, showFlagIn);
        return getSubThis();
    }
    public Sub setDelFlagEq(Integer delFlagEq){
        this.delFlagEq = delFlagEq;
        setEqualField(DouyinVideo.DEL_FLAG, delFlagEq);
        return getSubThis();
    }
    public Sub setVersionEq(Integer versionEq){
        this.versionEq = versionEq;
        setEqualField(DouyinVideo.VERSION, versionEq);
        return getSubThis();
    }
    public Sub setDiggCountEq(Integer diggCountEq){
        this.diggCountEq = diggCountEq;
        setEqualField(DouyinVideo.DIGG_COUNT, diggCountEq);
        return getSubThis();
    }
    public Sub setDownloadCountGreater(Integer downloadCountGreater){
        this.downloadCountGreater = downloadCountGreater;
        setGreaterField(DouyinVideo.DOWNLOAD_COUNT, downloadCountGreater);
        return getSubThis();
    }
    public Sub setDownloadCountLess(Integer downloadCountLess){
        this.downloadCountLess = downloadCountLess;
        setLessField(DouyinVideo.DOWNLOAD_COUNT, downloadCountLess);
        return getSubThis();
    }
    public Sub setPlayCountGreater(Integer playCountGreater){
        this.playCountGreater = playCountGreater;
        setGreaterField(DouyinVideo.PLAY_COUNT, playCountGreater);
        return getSubThis();
    }
    public Sub setPlayCountLess(Integer playCountLess){
        this.playCountLess = playCountLess;
        setLessField(DouyinVideo.PLAY_COUNT, playCountLess);
        return getSubThis();
    }
    public Sub setShareCountGreater(Integer shareCountGreater){
        this.shareCountGreater = shareCountGreater;
        setGreaterField(DouyinVideo.SHARE_COUNT, shareCountGreater);
        return getSubThis();
    }
    public Sub setShareCountLess(Integer shareCountLess){
        this.shareCountLess = shareCountLess;
        setLessField(DouyinVideo.SHARE_COUNT, shareCountLess);
        return getSubThis();
    }
    public Sub setForwardCountGreater(Integer forwardCountGreater){
        this.forwardCountGreater = forwardCountGreater;
        setGreaterField(DouyinVideo.FORWARD_COUNT, forwardCountGreater);
        return getSubThis();
    }
    public Sub setForwardCountLess(Integer forwardCountLess){
        this.forwardCountLess = forwardCountLess;
        setLessField(DouyinVideo.FORWARD_COUNT, forwardCountLess);
        return getSubThis();
    }
    public Sub setCommentCountGreater(Integer commentCountGreater){
        this.commentCountGreater = commentCountGreater;
        setGreaterField(DouyinVideo.COMMENT_COUNT, commentCountGreater);
        return getSubThis();
    }
    public Sub setCommentCountLess(Integer commentCountLess){
        this.commentCountLess = commentCountLess;
        setLessField(DouyinVideo.COMMENT_COUNT, commentCountLess);
        return getSubThis();
    }
    public Sub setMediaTypeIn(List mediaTypeIn){
        this.mediaTypeIn = mediaTypeIn;
        setInField(DouyinVideo.MEDIA_TYPE, mediaTypeIn);
        return getSubThis();
    }
    public Sub setItemIdEq(String itemIdEq){
        this.itemIdEq = itemIdEq;
        setEqualField(DouyinVideo.ITEM_ID, itemIdEq);
        return getSubThis();
    }
    public Sub setTitleLike(String titleLike){
        this.titleLike = titleLike;
        setLikeField(DouyinVideo.TITLE, titleLike);
        return getSubThis();
    }
    public Sub setTopFlagGreater(Integer topFlagGreater){
        this.topFlagGreater = topFlagGreater;
        setGreaterField(DouyinVideo.TOP_FLAG, topFlagGreater);
        return getSubThis();
    }
    public Sub setTopFlagLess(Integer topFlagLess){
        this.topFlagLess = topFlagLess;
        setLessField(DouyinVideo.TOP_FLAG, topFlagLess);
        return getSubThis();
    }
    public Sub setVideoCreateTimeStart(Date videoCreateTimeStart){
        this.videoCreateTimeStart = videoCreateTimeStart;
        setDateStartField(DouyinVideo.VIDEO_CREATE_TIME, videoCreateTimeStart);
        return getSubThis();
    }
    public Sub setVideoCreateTimeEnd(Date videoCreateTimeEnd){
        this.videoCreateTimeEnd = videoCreateTimeEnd;
        setDateEndField(DouyinVideo.VIDEO_CREATE_TIME, videoCreateTimeEnd);
        return getSubThis();
    }
    public Sub setReviewedFlagGreater(Integer reviewedFlagGreater){
        this.reviewedFlagGreater = reviewedFlagGreater;
        setGreaterField(DouyinVideo.REVIEWED_FLAG, reviewedFlagGreater);
        return getSubThis();
    }
    public Sub setReviewedFlagLess(Integer reviewedFlagLess){
        this.reviewedFlagLess = reviewedFlagLess;
        setLessField(DouyinVideo.REVIEWED_FLAG, reviewedFlagLess);
        return getSubThis();
    }
    public Sub setVideoStatusIn(List videoStatusIn){
        this.videoStatusIn = videoStatusIn;
        setInField(DouyinVideo.VIDEO_STATUS, videoStatusIn);
        return getSubThis();
    }
}